package com.uade.magicCompany.entities;


import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Transient;

import com.uade.magicCompany.model.GrupoUsuario;
import com.uade.magicCompany.model.Modelo;
import com.uade.magicCompany.model.Usuario;

/**
 * <!-- begin-user-doc --> <!-- end-user-doc -->
 * 
 * @generated
 */

@Entity
public class UsuarioEntity {

	@Id
	@Column(name = "usuarioEntity_id")
	private Long id;
	
	private String password;

	private String nombre;

	private String apellido;

	private String estado;

	private String nacionalidad;

	private String tipo;

	private String fechaNac;
	@ManyToOne
	@JoinColumn(name="grupoUsuarioEntity_id", nullable= true)	
	private GrupoUsuarioEntity grupoUsuario;
	
	public UsuarioEntity() {
		super();
	}

	public UsuarioEntity(Usuario usuario,GrupoUsuarioEntity grupo) {

		this.setId(usuario.getId());
		this.setNombre(usuario.getNombre());
		this.setApellido(usuario.getApellido());
		this.setPassword(usuario.getPassword());
		this.setNacionalidad(usuario.getNacionalidad());
		this.setFechaNac(usuario.getFechaNac());
		this.setGrupoUsuario(grupo);
		this.setEstado(Modelo.ACTIVO);
		this.setTipo(Modelo.VISITANTE);
	}
	
	public String getNacionalidad() {
		return nacionalidad;
	}

	public void setNacionalidad(String nacionalidad) {
		this.nacionalidad = nacionalidad;
	}
	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getApellido() {
		return apellido;
	}

	public void setApellido(String apellido) {
		this.apellido = apellido;
	}

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public Long getId() {
		return id;
	}


	public void setId(Long id) {
		this.id = id;
	}

	public String getTipo() {
		return tipo;
	}

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

	public GrupoUsuarioEntity getGrupoUsuario() {
		return grupoUsuario;
	}

	public void setGrupoUsuario(GrupoUsuarioEntity grupoUsuario) {
		this.grupoUsuario = grupoUsuario;
	}

	public String getFechaNac() {
		return fechaNac;
	}

	public void setFechaNac(String fechaNac) {
		this.fechaNac = fechaNac;
	}

	@Transient
	public Usuario getUsuario() {
		GrupoUsuario grupoUsuario= new GrupoUsuario(null, null, null);
		if(null!=this.getGrupoUsuario())
			 grupoUsuario = this.getGrupoUsuario().getGrupoUsuario();

		return new Usuario(getId().longValue(), getNombre(), getApellido(),
				getPassword(), getNacionalidad(),getFechaNac(), grupoUsuario);
	}
}
